package com.dms.modules.merchant.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dms.modules.merchant.dto.MerchantCommentBatchReplyDTO;
import com.dms.modules.merchant.dto.MerchantCommentTemplateDTO;
import com.dms.modules.product.vo.CommentStatisticsVO;
import com.dms.modules.merchant.vo.MerchantCommentTrendVO;
import com.dms.modules.product.vo.CommentVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 商家评论服务接口
 */
public interface MerchantCommentService {
    
    /**
     * 获取商品评论列表
     */
    IPage<CommentVO> getProductComments(Long productId, Page<CommentVO> page);
    
    /**
     * 获取商家所有商品的评论列表
     * @param merchantId 商家ID
     * @param page 分页参数
     * @param rating 评分筛选
     * @param hasImage 是否有图片筛选
     * @param sortField 排序字段
     * @param sortOrder 排序方式
     * @return 评论列表
     */
    IPage<CommentVO> getMerchantComments(Long merchantId, Page<CommentVO> page, Integer rating, 
        Boolean hasImage, String sortField, String sortOrder);
    
    /**
     * 回复评论
     */
    boolean replyComment(Long commentId, String reply, Long merchantId);
    
    /**
     * 批量回复评论
     */
    boolean batchReplyComments(MerchantCommentBatchReplyDTO dto);
    
    /**
     * 获取评论统计
     */
    CommentStatisticsVO getCommentStatistics(Long productId);
    
    /**
     * 获取评论趋势
     */
    List<MerchantCommentTrendVO> getCommentTrend(Long productId, Integer days);
    
    /**
     * 导出评论
     */
    void exportComments(Long productId, HttpServletResponse response);
    
    /**
     * 创建回复模板
     * @param dto 模板信息
     * @param userId 用户ID
     * @return 模板ID
     */
    Long createReplyTemplate(MerchantCommentTemplateDTO dto, Long userId);
    
    /**
     * 更新回复模板
     * @param id 模板ID
     * @param dto 模板信息
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean updateReplyTemplate(Long id, MerchantCommentTemplateDTO dto, Long userId);
    
    /**
     * 删除回复模板
     */
    boolean deleteReplyTemplate(Long id);
    
    /**
     * 获取回复模板列表
     */
    List<MerchantCommentTemplateDTO> getReplyTemplates();
} 